#include <iostream>
#include <string>
using namespace std;
// class Solution {
// private:
//     string strErase(string& str){
//         string s;
//         for(int i = 0;i < str.size();++i){
//             if(str[i] != '#') s += str[i];
//             else if(!s.empty()) s.pop_back();
//         }
//         return s;
//     }
// public:
//     bool backspaceCompare(string s, string t) {
//         return strErase(s) == strErase(t);
//     }
// };

class Solution {
public:
    bool backspaceCompare(string s, string t) {
        int i = s.size() - 1,j = t.size() - 1; 
        int sskipNum = 0;
        int tskipNum = 0;    
        while(1){  
            while(i >= 0){
                if(s[i] == '#') ++sskipNum;
                else{
                    if(sskipNum > 0) --sskipNum; //模拟删除
                    else break;
                }
                --i;
            }
            while(j >= 0){
                if(t[j] == '#') ++tskipNum;
                else{
                    if(tskipNum > 0) --tskipNum; //模拟删除
                    else break;
                }
                --j;
            }
            if(i < 0 || j < 0) break;
            if(s[i] != t[j]) return false;
            --i;
            --j;        
        }    
        if(i == -1 && j == -1) return true;
        return false;  
    }
};


int main()
{
    Solution sol;
    cout << sol.backspaceCompare("ab##","a##d#") << endl;
    return 0;
}